package com.neusoft.elm.dao.impl;

import java.util.ArrayList;
import java.util.List;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.neusoft.elm.dao.BusinessDao;
import com.neusoft.elm.po.Business;
import com.neusoft.elm.util.DBUtil;

public class BusinessDaoImpl implements BusinessDao {

	private Connection con = null;
	private PreparedStatement pst = null;
	private ResultSet rs = null;

	@Override
	public List<Business> listBusinessByOrderTypeId(Integer orderTypeId) throws Exception {
		List<Business> list = new ArrayList<>();
		String sql = "select * from business where orderTypeId=? order by businessId";
		try {
			con = DBUtil.getConnection();
			pst = con.prepareStatement(sql);
			pst.setInt(1, orderTypeId);
			rs = pst.executeQuery();
			while (rs.next()) {
				Business business = new Business();
				business.setBusinessId(rs.getInt("businessId"));
				business.setBusinessName(rs.getString("businessName"));
				business.setBusinessAddress(rs.getString("businessAddress"));
				business.setBusinessExplain(rs.getString("businessExplain"));
				business.setBusinessImg(rs.getString("businessImg"));
				business.setOrderTypeId(rs.getInt("orderTypeId"));
				business.setStarPrice(rs.getDouble("starPrice"));
				business.setDeliveryPrice(rs.getDouble("deliveryPrice"));
				business.setRemarks(rs.getString("remarks"));
				list.add(business);
			}
		} finally {
			DBUtil.close(rs, pst);
		}
		return list;
	}

	@Override
	public Business getBusinessById(Integer businessId) throws Exception {
		Business business = null;
		String sql = "select * from business where businessId=?";
		try {
			con = DBUtil.getConnection();
			pst = con.prepareStatement(sql);
			pst.setInt(1, businessId);
			rs = pst.executeQuery();
			while (rs.next()) {
				business = new Business();
				business.setBusinessId(rs.getInt("businessId"));
				business.setBusinessName(rs.getString("businessName"));
				business.setBusinessAddress(rs.getString("businessAddress"));
				business.setBusinessExplain(rs.getString("businessExplain"));
				business.setBusinessImg(rs.getString("businessImg"));
				business.setOrderTypeId(rs.getInt("orderTypeId"));
				business.setStarPrice(rs.getDouble("starPrice"));
				business.setDeliveryPrice(rs.getDouble("deliveryPrice"));
				business.setRemarks(rs.getString("remarks"));
			}
		} finally {
			DBUtil.close(rs, pst);
		}
		return business;
	}
	 @Override
	    public List<Business> searchBusinessByName(String keyword) throws Exception {
	        List<Business> list = new ArrayList<>();
	        String sql = "SELECT * FROM business WHERE businessName LIKE ?";
	        try {
	            con = DBUtil.getConnection();
	            pst = con.prepareStatement(sql);
	            pst.setString(1, "%" + keyword + "%"); // 使用%作为通配符进行模糊匹配
	            rs = pst.executeQuery();
	            while (rs.next()) {
	                Business business = new Business();
	                business.setBusinessId(rs.getInt("businessId"));
	                business.setBusinessName(rs.getString("businessName"));
	                business.setBusinessAddress(rs.getString("businessAddress"));
	                business.setBusinessExplain(rs.getString("businessExplain"));
	                business.setBusinessImg(rs.getString("businessImg"));
	                business.setOrderTypeId(rs.getInt("orderTypeId"));
	                business.setStarPrice(rs.getDouble("starPrice"));
	                business.setDeliveryPrice(rs.getDouble("deliveryPrice"));
	                business.setRemarks(rs.getString("remarks"));
	                list.add(business);
	            }
	        } finally {
	            DBUtil.close(rs, pst);
	        }
	        return list;
	    }
	 @Override
	    public void addBusiness(Business business) throws Exception {
	        String sql = "INSERT INTO business (businessName, businessAddress, businessExplain, businessImg, orderTypeId, starPrice, deliveryPrice, remarks) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
	        try {
	            con = DBUtil.getConnection();
	            pst = con.prepareStatement(sql);
	            pst.setString(1, business.getBusinessName());
	            pst.setString(2, business.getBusinessAddress());
	            pst.setString(3, business.getBusinessExplain());
	            pst.setString(4, business.getBusinessImg());
	            pst.setInt(5, business.getOrderTypeId());
	            pst.setDouble(6, business.getStarPrice());
	            pst.setDouble(7, business.getDeliveryPrice());
	            pst.setString(8, business.getRemarks());
	            pst.executeUpdate();
	        } finally {
	            DBUtil.close(null, pst);
	        }
	    }
}